#ifndef _HTTPSERVER_H_
#define _HTTPSERVER_H_
#include "myhead.h"

#define ISspace(x) isspace((int) (x))

#define SERVER_STRING "Server: jdbhttpd/0.1.0\r\n"

//处理从套接字上监听到的一个HTTP请求，此函数很大部分体现服务器处理请求流程
void accept_request(void*);

//返回给客户端这是一个错误请求
void bad_request(int);

//读取服务器上某个文件，写到套接字中
void cat(int, FILE *);

//处理发生在执行cgi程序事出现的错误
void cannot_execute(int);

//打印错误信息，并退出
void error_die(const char *);

//运行cgi程序的处理，是主要的函数
void execute_cgi(int, const char *, const char *, const char *);

//读取套接字的一行，把回车符换行符等情况都统一为换行符结束
int get_line(int, char *, int);

//把HTTP响应头部写到套接字中
void headers(int, const char *);

//处理找不到请求文件的情况，即发送404
void not_found(int);

//读取文件并返回给客户端，里面调用cat
void serve_file(int, const char *);

//初始化http服务，包括建立套接字、绑定端口、进行监听等。
int startup(u_short *);

//返回浏览器，表明method不支持
void unimplemented(int);

#endif